iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
Software Development

用leetcode系統化學習C語言系列 第 20

用指標動態改寫 IP 位址

  • 分享至 

  • xImage
  •  

經過前幾篇的練習,我們已經慢慢熟悉了陣列與指標的基本概念,今天要挑戰一個結合指標與 malloc 的經典題目:LeetCode 1108. Defanging an IP Address
💡 題目說明
給定一個字串形式的 IP 位址,例如:"1.1.1.1"要將其中的 . 替換成 [.],變成:"1[.]1[.]1[.]1"
🧩 解題思路
這題可以視為「重新建立新字串」的過程,我們可以這樣想:
先掃描原字串 address,統計 . 的數量,因為每個 . 會變成三個字元 [.],所以要多出兩個字元的空間
新字串長度 = 原字串長度 + 2 * (dot 的數量) + 1(記得最後的 \0),使用 malloc 配置新字串的空間
使用兩個指標:
p:指向原字串(用來讀取); q:指向新字串(用來寫入)
當 *p 不為 \0 若是 .,就依序寫入 '['、'.'、']',否則直接複製字元 並讓 p、q 同時往後移動
最後在新字串尾端加上 \0,回傳結果。
https://ithelp.ithome.com.tw/upload/images/20251004/20169489pZxWSnxF0F.png
https://ithelp.ithome.com.tw/upload/images/20251004/20169489j31JLHvxP1.png

🧭 學習重點
這題讓我更熟悉了:

  • 指標如何同時讀取與寫入不同的字串
  • malloc 配置空間時要預留 \0
  • 以 *p、*q 操作字元而不是用索引,是更符合 C 語言精神的寫法。

上一篇
練習 C 語言 malloc 與陣列插入
下一篇
用指標操作二維陣列
系列文
用leetcode系統化學習C語言24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言